package com.awenhui.demo.core.base;

/**
 * 操作响应码枚举类
 */
public enum ResultCode implements IBaseEnum {
    /**
     * 操作成功，httpStatus：200（请求成功）
     */
    SUCCESS(0, "操作成功"),
    /**
     * 服务器发生未知错误，httpStatus：500（服务器错误）
     */
    UNKNOWN_ERROR(5001, "服务器发生未知错误"),
    /**
     * 数据库中查询无符合记录，httpStatus：404（请求内容不存在）
     */
    DATABASE_NODATA(1025, "数据库中查询无符合记录"),
    /**
     * 验证失败
     */
    VERIFICATION_FAILED(1031, "验证失败"),
    // 接口签名相关
    /**
     * 该接口已被停用，httpStatus：503（Service Unavailable 服务不可用）
     */
    API_DISABLE(1060, "该接口已被停用"),
    /**
     * API接口调用失败，httpStatus：503（Service Unavailable 服务不可用）
     */
    API_ERROR(1061, "API接口调用失败"),
    /**
     * 缺少appId参数
     */
    API_APPKEY_MISS_ERROR(1062, "缺少appId参数"),
    /**
     * 缺少token参数，httpStatus：401（没有传token）
     */
    API_TOKEN_MISS_ERROR(1063, "缺少token参数"),
    /**
     * 缺少sign参数
     */
    API_SIGN_MISS_ERROR(1064, "缺少sign参数"),
    /**
     * 签名错误
     */
    API_SIGN_ERROR(1065, "签名错误"),
    /**
     * appid参数错误
     */
    API_APPKEY_ERROR(1066, "appid参数错误"),
    /**
     * token令牌参数无效
     */
    API_TOKEN_ERROR(1067, "token参数无效"),
    /**
     * code参数不存在
     */
    API_CODE_MISS_ERROR(1068, "code参数不存在"),
    /**
     * 接口属于待审核状态，无法使用，httpStatus：503（Service Unavailable 服务不可用）
     */
    API_PENDING(1069, "接口属于待审核状态，无法使用"),
    /**
     * 接口审核被拒，无法使用，httpStatus：503（Service Unavailable 服务不可用）
     */
    API_REJECTED(1070, "接口审核被拒，无法使用"),
    /**
     * token令牌失效
     */
    API_TOKEN_TIMEOUT(1071, "token令牌失效"),
    /**
     * code有效期超时
     */
    API_CODE_TIMEOUT(1072, "code有效期超时"),
    /**
     * code参数错误
     */
    API_CODE_ERROR(1073, "code参数错误"),
    /**
     * 参数错误
     */
    API_PARAM_ERROR(1074, "参数错误"),

    ;

    private int value;
    private String description;

    private ResultCode(int value, String description) {
        this.value = value;
        this.description = description;
    }

    /**
     * 获取枚举值
     *
     * @return
     */
    @Override
    public int getValue() {
        return value;
    }

    /**
     * 获取枚举值对应的描述信息
     *
     * @return
     */
    @Override
    public String getDescription() {
        return description;
    }

}